package com.tbit.uqbike.webmanager.dao.log;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.tbit.config.datasource.DataSource;
import com.tbit.uqbike.object.pojo.dto.WorkOrderLogQueryDTO;
import com.tbit.common.entity.pojo.vo.DateResult;
import com.tbit.uqbike.object.pojo.statistics.ExportPowerLog;
import com.tbit.uqbike.object.pojo.statistics.PowerLogDetail;
import com.tbit.uqbike.object.pojo.vo.BmsBatteryPowerChangeLogVO;
import com.tbit.uqbike.object.pojo.vo.CurrentBattery;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author MyWin E-mail:335918956@qq.com
 * @version 1.0
 * @createTime 2020-02-06 16:46
 */
@DS(DataSource.LOG)
public interface PowerChangeLogDao {
    int countPowerChangeLogTimes(@Param("accId") Integer accId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 换电次数日期统计
     */
    List<DateResult> statisticsByTime(Map<String, Object> map);

    /**
     * 根据分区id换电次数日期统计
     */
    List<DateResult> statisticsByTimeAndRegionId(Map<String, Object> map);

    /**
     * 换电记录份分页统计详细
     *
     * @param requestDTO .
     * @return .
     */
    List<PowerLogDetail> queryPage(WorkOrderLogQueryDTO requestDTO);

    /**
     * 换电次数统计导出
     */
    List<PowerLogDetail> exportByTime(WorkOrderLogQueryDTO queryDTO);

    /**
     * 换电记录份分页统计总数
     *
     * @param requestDTO .
     * @return .
     */
    Integer queryCount(WorkOrderLogQueryDTO requestDTO);

    List<ExportPowerLog> selectByType(HashMap<String, Object> params);

    List<ExportPowerLog> selectByTypeAndRegionId(HashMap<String, Object> params);

    PowerLogDetail getTimeById(String powerChangeLogId);

    /**
     * 根据审核id修改换电记录的审核状态
     */
    Integer amendAuditState(PowerLogDetail powerLogDetail);


    /**
     * 查询云bms电池换电历史
     *
     * @param adAccountId   区域id
     * @param batteryNO     换电后电池编号
     * @param startTime     开始时间
     * @param endTime       结束时间
     * @param bmsBatteryNos 云bms电池编号
     * @return
     */
    List<BmsBatteryPowerChangeLogVO> queryBmsBatteryPowerChangeLog(@Param("adAccountId") Integer adAccountId, @Param("batteryNO") String batteryNO, @Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("bmsBatteryNos") List<String> bmsBatteryNos);

    //获取换电时间和电量
    List<CurrentBattery> getCurrentAndPrevious(@Param("batteryNOS") List<String> batteryNOS);

    /**
     * 根据时间统计
     * @param map
     * @return
     */
    List<DateResult> mapByTimeAndRegionId(Map<String, Object> map);
}
